THINGINO_MOSQUITTO_VERSION = 2.0.22
THINGINO_MOSQUITTO_SOURCE = mosquitto-$(THINGINO_MOSQUITTO_VERSION).tar.gz
THINGINO_MOSQUITTO_SITE = https://sources.buildroot.net/mosquitto
THINGINO_MOSQUITTO_LICENSE = EPL-2.0 or EDLv1.0
THINGINO_MOSQUITTO_LICENSE_FILES = LICENSE.txt epl-v20 edl-v10
THINGINO_MOSQUITTO_CPE_ID_VENDOR = eclipse
THINGINO_MOSQUITTO_INSTALL_STAGING = YES

THINGINO_MOSQUITTO_MAKE_OPTS = \
	CLIENT_STATIC_LDADD="$(THINGINO_MOSQUITTO_STATIC_LIBS)" \
	UNAME=Linux \
	STRIP=true \
	prefix=/usr \
	WITH_WRAP=no \
	WITH_DOCS=no

ifeq ($(BR2_SHARED_LIBS),y)
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_STATIC_LIBRARIES=no
else
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_STATIC_LIBRARIES=yes
endif

ifeq ($(BR2_STATIC_LIBS),y)
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_SHARED_LIBRARIES=no
else
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_SHARED_LIBRARIES=yes
endif

ifeq ($(BR2_PACKAGE_SYSTEMD),y)
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_SYSTEMD=yes
THINGINO_MOSQUITTO_DEPENDENCIES += systemd
endif

# adns uses getaddrinfo_a
ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_ADNS=yes
else
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_ADNS=no
endif

# threaded API uses pthread_setname_np
ifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),y)
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_THREADING=yes
else
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_THREADING=no
endif

ifeq ($(BR2_PACKAGE_OPENSSL),y)
THINGINO_MOSQUITTO_DEPENDENCIES += host-pkgconf openssl
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_TLS=yes
THINGINO_MOSQUITTO_STATIC_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl`
else
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_TLS=no
endif

ifeq ($(BR2_PACKAGE_CJSON),y)
THINGINO_MOSQUITTO_DEPENDENCIES += cjson
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_CJSON=yes
THINGINO_MOSQUITTO_STATIC_LIBS += -lcjson
else
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_CJSON=no
endif

ifeq ($(BR2_PACKAGE_C_ARES),y)
THINGINO_MOSQUITTO_DEPENDENCIES += c-ares
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_SRV=yes
else
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_SRV=no
endif

ifeq ($(BR2_PACKAGE_THINGINO_MOSQUITTO_LIBWEBSOCKETS),y)
THINGINO_MOSQUITTO_DEPENDENCIES += libwebsockets
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_WEBSOCKETS=yes
else
THINGINO_MOSQUITTO_MAKE_OPTS += WITH_WEBSOCKETS=no
endif

# C++ support is only used to create a wrapper library
ifneq ($(BR2_INSTALL_LIBSTDCPP),y)
define THINGINO_MOSQUITTO_DISABLE_CPP
	$(SED) '/-C cpp/d' $(@D)/lib/Makefile
endef

THINGINO_MOSQUITTO_POST_PATCH_HOOKS += THINGINO_MOSQUITTO_DISABLE_CPP
endif

THINGINO_MOSQUITTO_MAKE_DIRS = lib client
ifeq ($(BR2_PACKAGE_THINGINO_MOSQUITTO_BROKER),y)
THINGINO_MOSQUITTO_MAKE_DIRS += src apps/mosquitto_ctrl apps/mosquitto_passwd
endif

ifeq ($(BR2_PACKAGE_THINGINO_MOSQUITTO_BROKER_DYNAMIC_SECURITY_PLUGIN),y)
THINGINO_MOSQUITTO_MAKE_DIRS += plugins/dynamic-security
endif

define THINGINO_MOSQUITTO_BUILD_CMDS
	$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) DIRS="$(THINGINO_MOSQUITTO_MAKE_DIRS)" \
		$(THINGINO_MOSQUITTO_MAKE_OPTS)
endef

define THINGINO_MOSQUITTO_INSTALL_STAGING_CMDS
	$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) DIRS="$(THINGINO_MOSQUITTO_MAKE_DIRS)" \
		$(THINGINO_MOSQUITTO_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install
endef

define THINGINO_MOSQUITTO_INSTALL_TARGET_CMDS
	$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) DIRS="$(THINGINO_MOSQUITTO_MAKE_DIRS)" \
		$(THINGINO_MOSQUITTO_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install
	rm -f $(TARGET_DIR)/etc/mosquitto/*.example
endef

ifeq ($(BR2_PACKAGE_THINGINO_MOSQUITTO_BROKER),y)
define THINGINO_MOSQUITTO_INSTALL_INIT_SYSV
	$(INSTALL) -D -m 0755 $(THINGINO_MOSQUITTO_PKGDIR)/files/S50mosquitto \
		$(TARGET_DIR)/etc/init.d/S50mosquitto

	$(INSTALL) -D -m 0644 $(@D)/mosquitto.conf \
		$(TARGET_DIR)/etc/mosquitto/mosquitto.conf
endef

define THINGINO_MOSQUITTO_INSTALL_INIT_SYSTEMD
	$(INSTALL) -D -m 0644 $(@D)/service/systemd/mosquitto.service.notify \
		$(TARGET_DIR)/usr/lib/systemd/system/mosquitto.service
endef

define THINGINO_MOSQUITTO_USERS
	mosquitto -1 mosquitto -1 * - - - Mosquitto user
endef
endif

HOST_THINGINO_MOSQUITTO_DEPENDENCIES = host-pkgconf host-openssl

HOST_THINGINO_MOSQUITTO_MAKE_OPTS = \
	$(HOST_CONFIGURE_OPTS) \
	UNAME=Linux \
	STRIP=true \
	prefix=$(HOST_DIR) \
	WITH_WRAP=no \
	WITH_DOCS=no \
	WITH_TLS=yes

define HOST_THINGINO_MOSQUITTO_BUILD_CMDS
	$(MAKE) -C $(@D)/apps/mosquitto_passwd $(HOST_THINGINO_MOSQUITTO_MAKE_OPTS)
endef

define HOST_THINGINO_MOSQUITTO_INSTALL_CMDS
	$(MAKE) -C $(@D)/apps/mosquitto_passwd $(HOST_THINGINO_MOSQUITTO_MAKE_OPTS) install
endef

$(eval $(generic-package))
$(eval $(host-generic-package))
